1. Field of the Invention
The present invention relates to the field of network computing and more particularly to a transparent proxy server.
2. Description of Related Art
A proxy server, also referred to simply as a proxy, is an application that provides access to the Internet or other external network for a single or small number of host computer systems while appearing to provide Internet access for a larger number of computer systems. Current proxy technologies provide for multiple personal computers (PCs) connected via a local area network (LAN) to access a single Internet Service Provider (ISP) account, for example.
The proxy server receives requests from client application programs hosted on a computer system on the LAN to communicate with remote servers external to the LAN. The proxy server evaluates these requests and determines which of the communications requests to pass on to the Internet or other external network where the indicated remote server(s) are located. If a communications request is approved, the proxy server communicates with the remote server on behalf of the client application. The proxy server does so by relaying requests from the client application to the remote server and returning responses from the remote server back to the client application. In this manner, the proxy server provides the illusion that the client program is communicating directly with the remote server.
Existing proxy servers require each client application program, such as an Internet browser program for example, to be configured to recognize and use the proxy server. Specifically, client programs need to know how to contact the proxy server with a communications request, and how to format the communications request in order to correctly identify the remote server with which communication is requested. Client programs which do not include proxy configuration capabilities may not make use of current proxy servers.
Currently available proxy servers have another issue in that specific code must be included in the proxy server to recognize and interpret each protocol that may be used by a client program. Commonly used protocols include Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), Telnet, and Secure Sockets Layer (SSL), for example. However, new protocols and revisions of existing protocols are frequently introduced. Thus, there may be an issue if a protocol used by a particular client program is not supported by the proxy server. In order to support a new or revised protocol, a new revision of the proxy server is developed and released. Adding to and/or revising proxy code requires a significant amount of time and effort such that proxy support for a new protocol may lag introduction of the protocol by several months or longer.
Further compounding the issue, when a currently available proxy server is used, protocols do not run in native mode when the client program has been configured for proxy mode. If the client program is a browser for example, with the browser in proxy mode, a request such as an FTP request is encapsulated within HTTP by an encapsulation routine before reaching the proxy server. The proxy server must then strip the FTP request from the HTTP encapsulation before making a connection over the Internet in native FTP mode. Similarly, all responses received from the remote server will be in native FTP, but the proxy server must then format the response into a HyperText Markup Language (HTML) page and send it back to the client program encapsulated within the HTTP protocol. Stripping incoming encapsulated requests received from the client application program and reformatting responses received from the Internet server requires significant overhead. Even client programs which do not directly encapsulate the protocol of the request within another protocol may still alter the protocol, such that it is different from the native protocol and does not run well for non-proxied purposes.
What is needed is a proxy server application which does not require client programs to run in proxy mode such that client programs which do not include proxy configuration capabilities may use the proxy server. Further, what is needed is a proxy server application which does not require additional code or significant code revisions in order to support new or revised protocols, and which is transparent to the client application for local communications requests such that non-proxied requests are handled transparently even in the presence of the proxy server application.